#pragma once

#include "Expression.hpp"
#include "Syntax/Token.hpp"

class BinaryExpressionSyntax : public ExpressionSyntax {
public:
  BinaryExpressionSyntax(SharedExpression left, SharedToken operatorToken,
                         SharedExpression right)
      : ExpressionSyntax(SyntaxKind::BinaryExpression, "BinaryExpression"),
        Left(left), OperatorToken(operatorToken), Right(right) {}

  std::vector<SharedNode> GetChildren() {
    return {this->Left, this->OperatorToken, this->Right};
  }

public:
  SharedExpression Left;
  SharedToken OperatorToken;
  SharedExpression Right;
};
